// registerFile.h

/*
 * Team Name: Focus
 * Team Members: Edward Bassan, Diana Groun
 * File Name: registerFile.c
 * File Version: 01/24/13
 * File Description: This File contains the definitions used
 * by the RegisterFile
 */

#include"register.h"

#ifndef REGISTERFILE_H_
#define REGISTERFILE_H_

// Defining the size of the register
#define REGISTER_FILE_SIZE 16

// Defining what a Register File is and its methods
typedef struct RegisterFile {
	RegisterPtr registers[16];
	unsigned short (*getRegisterValue)(struct RegisterFile*, int);
	int (*setRegister)(struct RegisterFile*, int, unsigned short);
	int (*dispalyRegisters)(struct RegisterFile*);
} RegisterFile;

// Defining the Register File Pointer
typedef RegisterFile* RegFilePtr;

// Defining all the methods that will be used by the Register File
RegFilePtr newRegisterFile();
unsigned short getRegisterValue(RegFilePtr, int);
int RegisterFileSetRegister(RegFilePtr, int, unsigned short);
int displayRegisterFile(RegFilePtr);

#endif /* REGISTERFILE_H_ */

// End of registerFile.h
